package zb.WX.util;

import zb.WX.bean.jsSdk.Sign;

import java.util.UUID;

/**
 * 获取JS-SDK权限验证的签名
 */
public class WxSign {
    /**
     * 获取签名
     *
     * @param url 这里需要传入一个动态的地址
     * @return
     */
    public static Sign getWxSign(String url) {
        String nonceStr = UUID.randomUUID().toString();//使用uuid获取随机字符串
        Long timestamp = System.currentTimeMillis() / 1000;//获取时间戳
        String jsapi_ticket = JsApiTicketSaveUtil.getLocationJsApiTicket();//jsapi_ticket
        //步骤1、按照字段名的ASCII 码从小到大排序（字典序）,这里按照下面的顺序固定就好了
        String string1 = "jsapi_ticket=" + jsapi_ticket +
                "&noncestr=" + nonceStr +
                "&timestamp=" + timestamp +
                "&url=" + url;

        //步骤2. 对string1进行sha1签名，得到signature
        String signature = SHA1Util.getSha1(string1);
        //步骤3. 将获取到的signature、jsapi_ticket、nonceStr和timestamp存入实体类，方便后续的使用
        Sign sign = new Sign();
        sign.setAppid(GlobalVar.APPID);
        sign.setUrl(url);
        sign.setJsapiTicket(jsapi_ticket);
        sign.setNonceStr(nonceStr);
        sign.setTimestamp(timestamp);
        sign.setSignature(signature);
        return sign;
    }
}
